package cn.chen.算法.十算法;

// 二分查找算法（非递归）
public class BinarySearchNoRecursive {

    public static void main(String[] args){


        int [] a={1,2,3,4,5,6,9,10,52,63,96,810};
        int index = binarySearch(a, 52);
        if(index!=-1)
            System.out.println("该值的索引为："+index);
        else
            System.out.println("没有该值");
    }

    /**
     * @param a     被查询的数组，从小到大排列
     * @param value 要查找的值
     * @return      查找到就返回索引，没有就返回-1
     */
    public static int  binarySearch(int[] a,int value){

        int start=0;
        int end=a.length-1;
        while(start<=end){

            int mid=(start+end)/2;
            if(a[mid]>value)

                end=mid;
            if(a[mid]<value)

                start=mid;
            if(a[mid]==value)
                return mid;
        }
        return -1;
    }
}
